Git常用命令总结
思维导图
一、 配置
1. config
(1) 配置作用域
- –system:对系统所有登录的用户有效
- –global:对当前用户所有仓库有效
- –local:只对某个仓库有效
1 | git config --global user.name 'your_name' |
(2) 配置查看
- –list [–global | --local | --system]
1 | git config --list |
(3) 配置命令别名
- alias
1 | git config --global alias.s status |
2. .gitignore文件
添加到暂存区时忽略此文件中所包含的文件。
- *:任意
- !:取反
- **:多级
- /:根目录
3. .gitkeeper文件
一个空文件,用来防止空文件夹被忽略
4 .git文件夹
(1) 文件
- HEAD:存储当前分支的引用
- config:存储local config
(2) 文件夹
- refs
- head:存储所有分支(commit)的引用
- tags:存储所有的tag引用
- objects:所有分支文件树(tree,blob,commit)
- hooks:各种钩子函数,如pre-commit等钩子函数,需要手动安装,可以使用集成的
husky
包。配合eslint使用可以达到commit等命令的时候,检查代码。
(3) cat-file
- 查看文件类型(commit | tag | tree | blob):
git cat-file -t <hashID>
- 查看文件内容:
git cat-file -p <hashID>
5. SSH
1 | ssh-keygen -t rsa -b 4096 -C "your_email@domain.com" |
二、 创建Git仓库
- 初始化:
git init [project_name]
- 克隆:
git clone <url>
三、 工作区
1. 工作区 -> 暂存区
- 添加文件:
git add <file>
:添加工作区文件 —> 暂存区git add -u
:更新已在暂存区中的文件
- 更新暂存区文件名:
git mv <old_file> <new_file>
- 删除文件:
git rm [--cached] <file>
2. stash
- 存储当前工作区:
git stash
- 显示存储区记录列表:
git stash list
- 恢复存储区最新的一条记录:
git stash apply
- 删除存储区记录:
git stash drop <stash@{}>
- 恢复并删除存储区最新的一条记录:
git stash pop
3. 撤销工作区的修改
git checkout -- <file>
git restore <file>
两种方式都可以,推荐使用restore。
四、暂存区
1. 暂存区 -> 本地仓库
git commit -m "description"
2. 撤销暂存区文件至工作区
git reset HEAD <file>
:相当于git reset --mixed HEAD <file>
git restore --staged <file>
两种都可以,推荐使用restore
五、本地仓库
1. 修改最新一次commit的description
git commit --amend
:相当于git reset --soft HEAD^ + git commit
2. 修改/合并commit
(1) git rebase -i <hashI>
:hashID为要修改的commit的父hashID
-
r 修改历史commit的description
-
s 合并多个连续/非连续的commit
-
git rebase --abort
:放弃rebase操作
(2) git rebase -i --root
:修改第一次commit的description
(3) git rebase <branch_name>
:将分支的分叉点移到最新的commit位置
如防止主分支log时分叉:
- dev:git rebase master
- master:git merge dev
3. 撤销commit
git reset --soft <hashID | HEAD^>
:回到已经添加到暂存区的状态git reset --mixed <hashID | HEAD^>
:回到修改后的工作区的状态(如果不加 --mixed,则默认就是 --mixed)git reset --hard <hashID | HEAD^>
:回到未修改时工作区的状态
撤销reset操作:
git reflog
查看git reset <HEAD@{}>
4. 给commit设置标签
- 查看标签:
git tag
- 添加标签:
git tag <tag_version> [hashID]
- 删除标签:
git tag -d <tag_version>
- 显示指定标签的commit信息:
git show <tag_version>
六、工作区、暂存区和本地仓库的“观察者”
1. status
查看工作区和暂存区的状态:git status
2. log
查看commit日志:git log
- git log --oneline:每条日志显示一行
- git log -n2:显示最近2次的日志
- git log -all:查看所有分支日志
- git log --graph:图形化显示日志
美化log:
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
3. reflog
查看commit日志,包括删除的和reset的:git reflog
4. diff
(1) 工作区 VS 暂存区
-
git diff
:比较工作区和暂存区之间的区别 -
git diff -- <file1> <file2>
:比较工作区和暂存区之间某文件的区别
(2) 暂存区 VS commit
git diff --cached
:比较暂存区和HEAD之间的区别
(3) commit VS commit
1 | # 比较commit之间的区别 |
(4) branch VS branch
git diff <branch_name1><branch_name2> -- <file1> <file2>
:比较不同分支之间某个文件的区别
七、分支
1. branch
- 创建分支:
git branch <branch_name>
- 删除分支:
git branch -d <branch_name>
:普通删除分支git branch -D <branch_name>
:强制删除分支
- 查看分支:
git branch
:查看本地分支git branch -v
:查看本地分支及版本信息git branch -a
:查看本地+远程分支git branch --merged
:查看已合并到当前分支的分支git branch --no-merged
:查看未合并到当前分支的分支
2. checkout
- 切换分支:
git checkout <branch_name>
- 创建并切换分支:
git checkout -b <branch_name | tag>
3. merge
合并分支:git merge <branch_name>
八、远程仓库
1. remote
- 查看添加的远程仓库:
git remote -v
- 添加远程仓库:
git remote add <origin> <url>
- 列出远程已经被删除但本地存在的分支:
git remote prune origin --dry-run
- 删除远程已经被删除但本地存在的分支:
git remote prune origin
2. push
- 首次推送并关联远程分支:
git push -u <origin> <本地分支名>[:<远程分支名>]
。 (-u 相当于 --set-upstream:关联本地的仓库分支和本地的远程仓库分支) - 推送并删除远程分支:
git push <origin> --delete <branch_name>
3. fetch
拉取远程仓库到本地的远程仓库:git fetch <origin>/[branch]
4. pull
拉取远程仓库分支并合并到本地分支(相当于 fetch + merge):git pull <origin> <远程分支名>[:<本地分支名>]
九、可视化管理工具
安装完git之后,会提供一个自带的可视化管理工具,只需输入gitk -all
命令即可打开。当然也有许多其他可视化工具,如sourcetree、tortoise等。